package com.cqvip.innocence.common.util.regex;

import cn.hutool.core.util.StrUtil;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @ClassName regex
 * @Description: 正则工具
 * @Author Innocence
 * @Date 2022/7/11 11:16
 * @Version 1.0
 */

public class RegexUtil {

    /**
     * 正则提取字符串中的数字
     *
     * @param source
     * @return java.lang.Long
     * @author Innocence
     * @date 2022/7/11
     */
    public static Long getNumByRegex(String source) {
        Pattern pattern = Pattern.compile("[^0-9]");
        Matcher matcher = pattern.matcher(source);
        String trim = matcher.replaceAll("").trim();
        return Long.valueOf(trim);
    }


    /**
     * 字符串是否包含中文
     *
     * @param str 待校验字符串
     * @return boolean 包含中文字符 false 不包含中文字符
     * @author Innocence
     * @date 2022/7/18
     */
    public static boolean isContainChinese(String str) throws RuntimeException {
        if (StrUtil.isEmpty(str)) {
            throw new NullPointerException("context is empty!");
        }
        Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]");
        Matcher matcher = pattern.matcher(str);
        if (matcher.find()) {
            return true;
        }
        return false;
    }

    /**
     * 字符串是否包含英文
     *
     * @param str 待校验字符串
     * @return boolean 包含英文字符 false 不包含英文字符
     * @author Innocence
     * @date 2022/7/18
     */
    public static boolean isContainEnglish(String str) {
        if (StrUtil.isEmpty(str)) {
            throw new NullPointerException("context is empty!");
        }
        Pattern pattern = Pattern.compile("[[a-zA-z]]");
        Matcher matcher = pattern.matcher(str);
        if (matcher.find()) {
            return true;
        }
        return false;
    }

    /**
     * 提取字符串的中文字符
     *
     * @param str 待提取字符串
     * @return java.lang.String
     * @author Innocence
     * @date 2022/7/18
     */
    public static String getChineseFromStr(String str) {
        String regEx = "[^\\u4e00-\\u9fa5]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
        return m.replaceAll("").trim();
    }

    /**
     * 提取字符串的英文字符
     *
     * @param str 待提取字符串
     * @return java.lang.String
     * @author Innocence
     * @date 2022/7/18
     */
    public static String getEnglishFromStr(String str) {
        String regEx = "[^a-zA-z]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
        return m.replaceAll("").trim();
    }

}
